//
//  HSTargetAction.h
//  ObjcDemo
//
//  Created by fan on 2021/10/15.
//

#import <Foundation/Foundation.h>
#import "HSParameters.h"

@interface HSTargetAction : NSObject

/// target 类名
@property (nonatomic, copy, readonly) NSString *targetClass;

/// action 方法名
@property (nonatomic, copy, readonly) NSString *actionMethod;

/// 方法参数
@property (nonatomic, strong, readonly) HSParameters *parameters;

/// 初始化方法
/// @param targetClass Target class name
+ (HSTargetAction *)targetClass:(NSString *)targetClass;

/// 初始化方法
/// @param targetClass Target class name
/// @param actionMethod action method name
+ (HSTargetAction *)targetClass:(NSString *)targetClass actionMethod:(NSString *)actionMethod;

/// 初始化方法
/// @param targetClass Target class name
/// @param actionMethod action method name
/// @param parameters  action parameters
+ (HSTargetAction *)targetClass:(NSString *)targetClass actionMethod:(NSString *)actionMethod parameters:(HSParameters *)parameters;

/// 链式初始化方法
/// return 类名block
+ (HSTargetAction *(^)(NSString *))cls;    // 类

/// 设置actionMethod链式方法
- (HSTargetAction *(^)(NSString *))mtd;    // 方法

/// 设置params链式语法
- (HSTargetAction *(^)(HSParameters *))params; // 可选：参数
// 能在编译期检查类和方法的方法
+ (HSTargetAction *(^)(Class))clas;    // 类
- (HSTargetAction *(^)(SEL))mted;    // 方法

/// 如果是Swift模块请添加Swift的模块名称
- (HSTargetAction *(^)(NSString *))swiftModuleName;
@end
